/**
 * 
 * 使用说明：
 * 1. 在<input>、<textarea>、<select>标签中加入下列自定义属性
 *  ftadValid
 *            为true则表示处于验证范围
 *  ftadValidType
 *            可选内容:
 *            text: 不能包括 < > % ' " 
 *            date: 满足yyyy-mm-dd即可
 *            int:  必须是正整数
 *            int2: 必须是整数，允许负数
 *            double: 必须是正数，最多允许4位小数
 *            double2: 必须是数字，最多允许4位小数，允许负数
 *            required: 必填（可以上面的参数组合出现）
 *  ftadValidName
 * 			  控件的代表名称，用于在alert中显示
 *  ftadValidMinLen
 * 			  允许输入最小字数
 *  ftadValidMaxLen
 * 			  允许输入最大字数
 * 
 * 2.在表单提交前调用ftadCommonValidate()方法，判断验证返回值
 * 
 * 方法参数说明：
 * 
 * @param form  form对象，可选，如果传入则在该表单范围内搜索需要验证的内容，
 * 				如 ftadCommonValidate(document.form1); 
 * 				或 ftadCommonValidate(document.getElementById('form1'));
 * 				或 ftadCommonValidate("#form1");
 * 				或 ftadCommonValidate($("#form1"));
 * @param selector  jquery选择器字符串，可选，如果传入则在选择器筛选出的范围内搜索需要验证的内容，注意:并且需要将第一个参数传为null，如ftadCommonValidate(null,'#test');
 * @returns {Boolean}
 */
function ftadCommonValidate(form,selector) {

	var isPass = true;
	
	var array = null ;
	
	if(!form){
		array = $("input[ftadValid=true],textarea[ftadValid=true],select[ftadValid=true]");
	}else{
		
		//如果传入则在指定表单范围内搜索需要验证的内容
		array = $(form).find("input[ftadValid=true],textarea[ftadValid=true],select[ftadValid=true]");
	}
	
	//如果传入且form传为null,则在选择器筛选出的范围内搜索需要验证的内容
	if(!form && selector){
		array = $(selector);
	}

	//alert(array.length);
	
	array.each(
					
			function() {
				var validType = $(this).attr("ftadValidType");
				var validName = "'" + $(this).attr("ftadValidName") + "'";
				var validMinLen = $(this).attr("ftadValidMinLen");
				var validMaxLen = $(this).attr("ftadValidMaxLen");

				if (validType == null) {
					validType = "";
				}
				if (validName == null) {
					validName = "";
				}

				var validTypeArr = validType.split(",");

				if (ftadCommonArrayFind(validTypeArr, "required")) {
					if ($(this).val() == "") {
						alert("请填写" + validName);
						$(this).focus();
						isPass = false;
						return false;
					}
				}

				if ($(this).val() != "") {

					if (ftadCommonArrayFind(validTypeArr, "text")) {
						var reg3 = /[<>%'"]/;
						if (reg3.test($(this).val())) {
							alert(validName + "不能包括 < > % ' \" ");
							$(this).focus();
							isPass = false;
							return false;
						}
					}
					
					if (ftadCommonArrayFind(validTypeArr, "date")) {
						var reg = /^(\d{4})-(\d{2})-(\d{2})$/;
						
						if ( ! reg.test($(this).val())) {
							alert(validName + "不符合日期格式'yyyy-mm-dd'");
							$(this).focus();
							isPass = false;
							return false;
						}
					}

					if (ftadCommonArrayFind(validTypeArr, "int")) {
						var reg = /^\d+$/;
						if ( ! reg.test($(this).val())) {
							alert(validName + "只允许输入正整数");
							$(this).focus();
							isPass = false;
							return false;
						}
					}
					
					if (ftadCommonArrayFind(validTypeArr, "int2")) {
						var reg = /^(-?)(\d+)$/;
						if ( ! reg.test($(this).val())) {
							alert(validName + "只允许输入整数");
							$(this).focus();
							isPass = false;
							return false;
						}
					}

					if (ftadCommonArrayFind(validTypeArr, "double")) {
						//任意数字 + [. + 1-4个数字] (可有可无)
						var reg = /^(\d+)((\.)(\d{1,4}))?$/;
						 
						if ( ! reg.test($(this).val())) {
							alert(validName + "只允许输入正数，允许输入4位小数");
							$(this).focus();
							isPass = false;
							return false;
						}
					}
					
					if (ftadCommonArrayFind(validTypeArr, "double2")) {
						//任意数字 + [. + 1-4个数字] (可有可无)
						var reg = /^(-?)(\d+)((\.)(\d{1,4}))?$/;
						if ( ! reg.test($(this).val())) {
							alert(validName + "只允许输入正数，允许输入4位小数");
							$(this).focus();
							isPass = false;
							return false;
						}
					}
				}

				if (isNaN(validMinLen) == false) {
					if ($(this).val().length < validMinLen) {
						alert(validName + "最少需要" + validMinLen + "个字符");
						$(this).focus();
						isPass = false;
						return false;
					}
				}

				if (isNaN(validMaxLen) == false) {
					if ($(this).val().length > validMaxLen) {
						alert(validName + "不能超过" + validMaxLen + "个字符");
						$(this).focus();
						isPass = false;
						return false;
					}
				}
			});

	return isPass;
}

function ftadCommonArrayFind(arr, str) {
	for ( var i = 0; i < arr.length; i++) {
		if (arr[i] == str) {
			return true;
		}
	}
	return false;
}